package com.wx;

import java.util.Arrays;

/**
 * @ClassName LogarithmicUtils
 * @Author wx
 * @Description 数组工具类
 * @Date 2020-03-25-21:47
 */
public class ArrayUtils {

    /**
     * 生成随机数组
     */
    public static int[]  gennerateArray(int len,int max){
        int[] arr=new int[len];
        for(int i=0;i<arr.length;i++){
            arr[i]=(int)(Math.random()*max);
        }
        return arr;
    }
    /**
     * 对比数组内容
     */
    public static boolean arrayCompare(int[] array,int[] arrayTwo){
        return Arrays.equals(array, arrayTwo);
    }


    /**
     * 数组验证
     */
    public static boolean arrayValidation(int[] array){
        return array == null  || array.length == 0;
    }

    /**
     * 交换
     */
    public static  void swop(int[] array,int l,int r){
        if (l != r) {
            int temp = array[l];
            array[l] = array[r];
            array[r] = temp;
        }
    }

    /**
     * 对数比较验证结果
     */
    public static void logarithmicRun(int count,int max,int length ,Sort sort){
        for (int i = 0; i < count; i++) {
            int[] array = ArrayUtils.gennerateArray(length, max);
            int[] arrayCopy = Arrays.copyOf(array,length);

            sort.run(array);
            Arrays.sort(arrayCopy);
            if (!ArrayUtils.arrayCompare(array,arrayCopy)) {
                throw new RuntimeException("排序数据不是正确");
            }
            System.out.println(Arrays.toString(array));
            System.out.println(Arrays.toString(arrayCopy));
        }

    }

    
    /**
     * 排序实现接口函数
     */
    public static interface  Sort {

        void run(int[] array);

    }
}
